Test Double
テストダブル。(下位概念である「モック」とは別に)Test Double を総称して「モック」と呼ぶこともある。
『xUnit Test Patterns: Refactoring Test Code』における分類
Dummy:テストに影響を与えない
Stub:テスト対象への間接入力を操作する
Spy:テスト対象からの間接出力を記録し、テストコードから参照可能にする
Mock:テスト対象からの間接出力の期待結果を持ち、実際の間接出力を検証する
Fake:本物と同様の動作をする
SUT(System Under Test)は、DOC(Depended-On Component)を持っている場合がある。DOCは、SUTへ入力を与えることでSUTの挙動を変化させたり、SUTの挙動の一部としてSUTから入力を受け取る。テストコードからSUTに与えられる入力(直接入力)や、SUTが戻り値などの形で与えるテストコードへの出力(直接出力)が、テストコードから操作・観測可能であるのに対し、DOCからの入力(間接入力)やDOCへの出力(間接出力)は通常の形では操作・観測ができない。そこでStubやSpyなどが用いられる。
『Googleのソフトウェアエンジニアリング』 におけるテストダブルのテクニックの分類
フェイク
スタブ
インタラクションテスト
参考
xUnit Test PatternsのTest Doubleパターン(Mock、Stub、Fake、Dummy等の定義) - 千里霧中
https://www.slideshare.net/goyoki/xunit-test-patternstest-double
https://bliki-ja.github.io/TestDouble
Mocks Aren't Stubs
by Martin Fowler's Bliki (ja)